The present invention relates to computer systems and, in particular, to the communication of information between a host computer and a remotely located tape storage device.
Presently, a basic computer system includes: (1) a processor for executing instructions; (2) a memory for containing the instructions executed by the processor and, in many cases, the result of an instruction that has been executed by the processor; (3) an input peripheral, such as a keyboard or mouse; (4) an output peripheral, such as a monitor or printer; and (5) a storage peripheral, such as a tape or disk drive that provides storage beyond that provided by the memory. When a computer system is in operation, the memory contains at least one program, i.e., a list of instructions that are executed by the processor to accomplish one or more tasks. Typically, the memory contains all or part of a program that is known as an operating system and all or part of an application program. The operating system is a program that performs certain basic tasks, like processing input from a keyboard, sending output to a monitor, keeping track of files and directories, and controlling any storage peripherals that are part of the system. An application program is a program that is designed to perform a particular task or tasks for a user, such as word processing. Typically, the execution of an application program requires communication with an input peripheral, output peripheral, storage peripheral, a particular file etc. To achieve such communications, the application program utilizes the operating system. For instance, if an application program required a particular data file to perform a particular task, the application program would issue a request for the file to the operating system. In turn, the operating system would determine where the data file is located (e.g., a disk drive) and issue the appropriate command(s) to retrieve all or part of the file and place the file in the memory such that the file can be used by the application program.
Presently, peripherals such as disk and tape drives are commonly attached to the rest of a computer system via a Small Computer System Interface (SCSI). Peripherals that are attached via a SCSI interface are considered xe2x80x9clocalxe2x80x9d peripherals. Further, many application programs are written so as to utilize xe2x80x9clocalxe2x80x9d peripherals.
In many work environments, computer systems are linked together to form computer networks that allow the member computer systems to share information with one another. There are many different types of computer networks. For instance, there are local-area networks (LANs) in which the member computer systems are geographically close to one another, such as in the same building. There are also wide-area networks (WANs) in which the member computer systems are separated from one another by distances that require the use of telephone, optical and/or radio communication systems to link the computer systems to one another. Computer networks are also characterized according to: (1) topology, i.e., the geometric arrangement of the member computer systems and the interconnections between the systems; (2) protocol, i.e., the set of rules and signals that are used by the member computer systems to communicate with one another; and (3) architecture, which can be broadly classified as either: (a) peer-to-peer in which member computer systems have substantially the same capabilities; or (b) client/server in which xe2x80x9cclientxe2x80x9d computer systems execute application programs that typically require the resources managed by the xe2x80x9cserverxe2x80x9d computer systems, such as files and directories.
The present invention allows application programs that are executing on a particular computer system and that have been designed to utilize a xe2x80x9clocalxe2x80x9d SCSI tape storage devices(e.g., tape drives and tape libraries) associated with the computer system to access SCSI tape storage devices that are remotely located, i.e., associated with another computer system in a computer network.
In one embodiment, a host computer system and SCSI tape storage device that is remotely located relative to the host computer are connected to one another via a computer network, e.g., a LAN or WAN. Incorporated into the host computer system is a virtual adapter that interfaces with the operating system of the host computer such that from the operating system perspective, the operating system sends /receives SCSI command related information to/from a local SCSI tape storage device, i.e., a SCSI tape storage device associated with the host computer system. However, the virtual adapter actually enables communication of the SCSI command related information with the remotely located SCSI tape storage device by appropriate encoding and decoding of the SCSI command related information. Specifically, the virtual adapter: (1) receives unencoded SCSI command related information (i.e., normal SCSI command related information) from the host computer operating system; (2) encodes the unencoded SCSI command related information received from the operating system so that the information is in a suitable format for transmission via the computer network to a SCSI tape storage device that is associated with another computer system in the network, i.e., a remote SCSI tape storage device; (3) decodes encoded SCSI command related information received over the computer network from a remotely located SCSI tape storage device; and (4) transmits the decoded SCSI command related information to the host operating system, which can then convey the information, if needed, to the application program.
The remotely located SCSI tape storage device includes a controller that: (1) decodes the encoded SCSI command related information received from the network so that the SCSI command related information can be applied to an actual SCSI tape storage unit; and (2) encodes the unencoded SCSI command related information produced by the SCSI tape storage unit for transmission over the network to the host computer system.
In one embodiment, it has been recognized that the operating system must initially identify all the local SCSI devices associated with the host computer but that it is not possible to identify a remote SCSI device that the host computer communicates with via the virtual adapter at the point in time because the operating system has not yet reached the point in the xe2x80x9cboot upxe2x80x9d process at which network communications are enabled. To address this problem, a program is provided that allows a user of the host computer system to identify the remote SCSI tape storage devices associated with the virtual adapter and store the information that the operating system would require from these devices during boot up of the host computer in a location that is accessible to the host computer. In one embodiment, the information is stored in the system registry, a portion of the host computer memory that is dedicated to the operating system. In this embodiment, when the host computer is being booted up, the operating system loads the virtual adapter and then sends an inquiry command to the virtual adapter to identify the SCSI devices associated with the adapter. In response, the virtual adapter provides the operating system with the information stored in the registry that relates to the remote SCSI tape storage devices, which are meant to appear to the operating system as local SCSI tape storage devices.
In another embodiment, the number of exchanges between the host computer and the remote SCSI tape storage device to process a SCSI command is reduced. The typical sequence of communications between a host computer and a SCSI device in processing a SCSI command is: (1) the host computer sends a command to a SCSI device; (2) the SCSI device accepts the command and sends a xe2x80x9crequest for dataxe2x80x9d to the host computer; (3) the host computer sends the data to the SCSI device; and (4) the SCSI sends a response to the host computer concerning the processing of the command and related data. As a consequence, a total of four exchanges between the host computer and the SCSI device are required to process a SCSI command. The present invention reduces the number of exchanges needed to process a SCSI command to two. This reduction is achieved by a sequence of communications that involves: (1) the host computer, via the virtual adapter, sending the command and data associated with the command to the SCSI device at the same time; and (2) the SCSI device sending the response to the host computer concerning the processing of the command and related data. In one embodiment, this reduction is achieved by defining a command processing protocol that does not permit a second underlying protocol, namely, the TCP/IP protocol, to acknowledge the receipt oft he data associated with the SCSI command until the resources are available to process the data.
In a further embodiment of the invention, the frequency with which SCSI write commands can be issued by the host computer to the remote SCSI tape storage device is increased. Typically, once a host computer issues a SCSI command to a SCSI tape storage device, the host computer must wait until a response is received from the SCSI tape storage device (e.g., a successful completion) before another command can be issued to the device. The present invention provides a controller in the remote SCSI device that upon receipt of a SCSI write command, sends a response to the host computer before the command is actually processed by the tape storage device. As a consequence, the host computer is enabled to issue further SCSI commands to the remote SCSI tape storage device while the device is processing the previously issued SCSI write command. In one embodiment, the controller only issues the response to the SCSI write command prior to the processing of the command if a prior similar command has been successfully completed.
Another embodiment of the invention provides for robust or error tolerant communication of SCSI commands and related data between the host computer and the remote SCSI tape storage device. Specifically, the virtual adapter terminates a TCP/IP endpoint connection between the host computer and the remote SCSI tape storage device when after completion of a prior SCSI command, there is predetermined period of time during which there are no outstanding SCSI commands to be processed. This limits the exposure of the endpoint connection established by the TCP/IP protocol to disruptions that typically necessitate time consuming recovery procedures. In addition, the virtual adapter provides for a xe2x80x9csessionxe2x80x9d that can accommodate several endpoint connections. To elaborate, the SCSI protocol provides for the ability to xe2x80x9creservexe2x80x9d or dedicate a SCSI device so that an application program executing on a host computer can complete a particular task involving the SCSI device and, once the task is completed, xe2x80x9creleasexe2x80x9d the SCSI device so that other programs can use the device. To support the ability to xe2x80x9creservexe2x80x9d a SCSI tape storage device and at the same time terminate TCP/IP endpoint connections, the virtual adapter provides the ability to define a session that for the possibility of multiple endpoint connections needing to be established during the time when the SCSI tape storage device is reserved. The ability to have a session that involves multiple endpoint connections is achieved by retaining a session identifier in the virtual adapter associated with the host computer and the controller associated with the remote SCSI tape storage unit that allows the certain session state/property to be accessed and thereby facilitate the processing of SCSI command related information over multiple endpoint connections. To elaborate, the session identifier eliminates the need to exchange the noted state/property information between the host computer and the remote SCSI tape storage device upon the establishment of each endpoint connection that is part of a session. In one embodiment, a random number is utilized in the process to provide assurance with respect to security and authentication.
In yet another embodiment, the invention provides the ability to recover when an TCP/IP endpoint connection has failed during a session. To elaborate, the invention provides the ability to re-synchronize the host computer and the remote SCSI tape storage device so as to avoid duplication of commands that have been processed and re-establish commands that have not been processed. This is accomplished by maintaining command lists in the virtual adapter associated with the host computer and the controller associated with the remote SCSI tape storage device. Following the failure of an endpoint connection, the virtual adapter and controller engage in comparison of their respective lists. If a command is on the virtual adapter list but not on the device list, it is assumed that the command was never sent from the host computer to the remote SCSI tape storage device and therefore never processed by the remote SCSI tape storage device. Such commands are added to the list of commands to be executed by the remote SCSI tape storage device. On the other hand, if a command is not on the virtual adapter list but is on the remote SCSI tape storage device list, it is assumed that the device processed the command but the endpoint connection failed before the host computer sent an acknowledgment of the completed command to the device. In this case, the command is deleted from the remote SCSI tape storage device list. Finally, if a SCSI command is on both the virtual adapter list and the remote SCSI tape storage device list, the command remains on both lists.
In another embodiment of the invention, the virtual adapter and controller can establish an endpoint connection that does not interfere with a session of multiple endpoint connections. The connection only allows SCSI commands that do not change the state oft he remote SCSI tape storage device to be processed. Examples of such SCSI command are the SCSI inquiry and read block limits commands. The ability to establish this type of connection allows the host computer, via the virtual adapter, to discover information about the remote SCSI tape storage device without interfering with any preexisting session of TCP/IP endpoint communication occurring between the host computer and the remote SCSI tape storage device. Such discovery is commonly needed by the host computer to establish identification information to be stored for use when the computer is booted-up at a later time.